package day03;
//此类是用于验证逻辑运算的测试demo
public class LogicalOperation {
    public static void main(String[] args) {
        /*逻辑运算
        * 逻辑与 &：所有条件都成立，最终结果才成立
        * 逻辑或 |：只要成立1个，最终结果就成立
        * 逻辑非 !: 取反操作*/

        int a=10;
        int b =5;
        int c=2;
        //false，条件2不成立，结果就不成立，因为是逻辑与
        boolean result =a>b & b<c;
        System.out.println(result);
        //true，条件1成立，结果就成立，因为是逻辑或
        result=a>b | b<c;
        System.out.println(result);
        //true, a==c条件不成立，！表示取反，那么就是true
        System.out.println(!(a==c));
        System.out.println(a==c);

        System.out.println(a>b|b<c); //true
        System.out.println(a<b&b<c); //false
        System.out.println(!(a>5)); //false

        //短路与：&&，当条件失败，后方条件不再执行
        //短路或：||，当条件成立，后方条件不再执行

        int a1=5;
        int a2=4;
        //短路与：&&，当条件失败，后方条件不再执行
        boolean a3=a1<a2&&++a2<a1;
        System.out.println(a3);
        System.out.println(a2); //false
        //短路或：||，当条件成立，后方条件不再执行
        System.out.println(++a2==a1||a2<++a1);//true
        System.out.println(a2); //5
        System.out.println(a1); //5
        System.out.println(true);
        System.out.println('t'+"r"+'u'+'e');
        System.out.println("true");


        String str1=String.valueOf(a3);//把基本数据类型boolean型变量a3转换成String类型
        System.out.println(str1);

        //验证a3的数据类型
        Boolean boxedA3=a3;
        System.out.println(boxedA3.getClass());  //class java.lang.Boolean
        System.out.println(boxedA3.getClass()== Boolean.class); //true

        //验证str1的数据类型
        System.out.println(str1.getClass().getName()); //java.lang.String
    }
}
